package cn.com.dycc.party_org.organize.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import cn.com.dycc.party_org.organize.entity.OrganizeEntity;
import cn.com.dycc.party_org.organize.entity.OrganizeUserInfo;
import cn.com.dycc.party_org.organize.entity.PartyInfo;
import cn.com.dycc.party_org.organize.param.CountPartyParam;
import cn.com.dycc.party_org.organize.param.OrganizeParam;
import cn.com.dycc.party_org.organize.param.PartyInfoParam;
/**
 * 党组织持久层接口
 * @author linfa
 *
 */
@Repository("organizeDao")
public interface OrganizeDao {
	/**
	 * 增加党组织
	 * @param organizeParam 增加党组织参数
	 * @return
	 */
	public int addDeptParty(OrganizeParam organizeParam);
	
	/**
	 * 统计党组织命名同部门的同级不同名
	 * @param countPartyParam
	 * @return
	 */
	public int countParty(CountPartyParam countPartyParam);
	
	/**
	 * 根据党组id查询党组是否存在
	 * @param id
	 * @return
	 */
	public int findCountDeptPartyById(
			@Param("id")String id,
			@Param("org_id")String org_id);
	
	/**
	 * 查询全部党组织人员信息
	 * @param org_id
	 * @param pid
	 * @return
	 */
	public List<OrganizeUserInfo> findOrganizeUser(
			@Param("org_id") String org_id,
			@Param("pid") String pid
			);
	
	/**
	 * 查询所有显示党组织树
	 * @param partyInfoParam
	 * @return
	 */
	public List<PartyInfo> findListPartyInfo(PartyInfoParam partyInfoParam);
	
	/**
	 * 根据党组织id查询该党组织信息
	 * @param dept_id
	 * @return
	 */
	public OrganizeEntity findOrganizeByDeptId(
			@Param("dept_id")String dept_id,
			@Param("org_id")String org_id);
	
	/**
	 * 根据id更新党组织信息
	 * @param organizeParam
	 * @return
	 */
	public int updateOrganize(OrganizeParam organizeParam);
	
	/**
	 * 根据党组织id删除党组织信息
	 * @param dept_id
	 * @return
	 */
	public int deleteOrganize(
			@Param("dept_id")String dept_id,
			@Param("org_id")String org_id);
	
	/**
	 * 根据pid查询党组织是否还存在下级部门
	 * @param org_id
	 * @param pid
	 * @return
	 */
	public int findCountByPid(			
			@Param("org_id") String org_id,
			@Param("pid") String pid);
	
	//统计党组织      liket
	String deptPartyCount(String org_id);
	
	/**
	 * 根据归属部门id查询该党组织信息 gf
	 * @param own_dept_id
	 * @return
	 */
	public List<OrganizeEntity> findOrganizeByOwnDeptId(String own_dept_id);
	
}
